{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import keras.backend as K\n",
    "from data_manager import ClutteredMNIST\n",
    "from visualizer import plot_mnist_sample\n",
    "from visualizer import print_evaluation\n",
    "from visualizer import plot_mnist_grid\n",
    "from models import STN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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0R23/9noRkp3RvcmOd/X44LM/Pnork/5bmZeEd1hp92iO0dzWP9zvqFffn1mvj0i3hsR3+hPpv8gutlZT4pumviz5rv9kT7dFxN3KtgMF0Z3DuWZU6735ohYk5nfiG5fuDO68xzPiW7SyEMR8YahGWuL4IMRsXdmfjm6sHkgIn4+Il4c3TVml0REtNZuz8xLIuLYiFiXmVf2ffyFiPhxdNenjc1yW2xf7vswe384JLpJM4P3/5tt2v2QBaqeP+7x2Ed0kxY+FN0n2h9G98d+W3QjoRNi1rUZMXIdUV93cET8j4j4++jCbG10hymOj+HriP5RRJwb3RTyhybbje6cxn+N7uTvwzFwLUp0b6oXRvemtCG66z6ui4jzIuLFE8uujXlc1xMRvxLd9Td39K/F7dGN+H43Ip4+sPxx0QXlj6N7k74oIp483+1N9i8injqPZed1HdHAei+NR6+dme91RC+MiHdFd17xpv51/lF0F95+JCKeuYm+rhn63c3zNfmNiPhvEfF/+33qh/3v910RsfvEsjv15Tf0v4ubI+IPo5vYstHvIh69jmijfs21n/f1G13jFo9eR3RAdJMrvtP349boLtre6NqrmONaumn3Q4/pHtm/yABbjexuFfWaiNi/zbqujOXJOSIASgkiAEoJIgBKOUcEQKklnb6dI9+RA8DWp83zrhMOzQFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUEoQAVBKEAFQShABUGr76g7ActRaG63LzCXsCWz9jIgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAo5aanMGDt2rXVXYBthhERAKUEEQClBBEApQQRAKUEEQClzJqDAVdddVV1F2CbYUQEQClBBEApQQRAKUEEQClBBEApQQRAqWytLd3GMpduYwCUaq3lfJYzIgKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoNT21R0AVo5DDjlktO7rX//6YPlFF100WP6a17xmUfrEymdEBEApQQRAKUEEQClBBEApQQRAKbPmgHm76aabRuuuu+66wfLW2pbqDlsJIyIASgkiAEoJIgBKCSIASgkiAEoJIgBKmb4NzNs999wzWnfbbbctYU/YmhgRAVBKEAFQShABUEoQAVBKEAFQyqw5Vpyrr756sHzvvfceXWfffffdUt1Z9g444IDRuhe84AVTtbV69erRuuc///mD5Q899NBg+etf//rRts4777yp+sXKZkQEQClBBEApQQRAKUEEQClBBECpXMqv8c1M3xnMvO2zzz6D5VdeeeVg+eMf//jRtvbff/9F6dNKdPfdd4/WPfGJTxwsz8zB8qV6v7j00ksHy4899tgl2T6Lo7U2vCNNMCICoJQgAqCUIAKglCACoJQgAqCUIAKglOnbLFunn376YPnZZ589WH7zzTePtrUtT9++4447RuvGbkh6//33D5afe+65o22deOKJg+UHHnjgHL0btmrV8GfksWnlLE+mbwOwIggiAEoJIgBKCSIASgkiAEr5qnBK7bzzzqN1p5566hL2ZOv1tKc9bbTunnvuWbTtPPjgg4Pl733ve6dua926dZvbHVYQIyIASgkiAEoJIgBKCSIASgkiAEqZNUepsfuTRUTstddeU7X16U9/enO7s1VazJlxc7nooosGy0855ZTB8rnu//fsZz97UfrEymBEBEApQQRAKUEEQClBBEApQQRAKUEEQCnTt1m2pv1a6C9+8YtbqCfMx1133TVYvpCvCmfbYkQEQClBBEApQQRAKUEEQClBBEAps+Yo9axnPWu0rrU2WD42O+uWW25ZlD4BS8uICIBSggiAUoIIgFKCCIBSggiAUoIIgFI5NkV2i2wsc+k2xrKy3377DZZ/97vfHV1nbN98+ctfPlj+yU9+cup+AVtOa21edy42IgKglCACoJQgAqCUIAKglCACoJSbnrKott9+eJd6xzvesWjbuPHGGxetLaCeEREApQQRAKUEEQClBBEApQQRAKXMmmNR7bXXXoPlJ5xwwhL3BFgpjIgAKCWIACgliAAoJYgAKCWIACgliAAoZfo2i+rwww8fLM8c/sbgVavGPwt94hOfGCy/5pprpu8YsGwZEQFQShABUEoQAVBKEAFQShABUMqsORbV0UcfPVjeWhssf+SRR0bb+uY3v7kofQKWNyMiAEoJIgBKCSIASgkiAEoJIgBKmTXH1HbeeefRut12222qtr73ve+N1p1//vlTtQWsTEZEAJQSRACUEkQAlBJEAJQSRACUEkQAlDJ9m6kdfPDBo3VHHnnkVG2NfR14RMSdd945VVvAymREBEApQQRAKUEEQClBBEApQQRAKbPmmNoxxxxT3QVgK2JEBEApQQRAKUEEQClBBEApQQRAqWytLd3GMpduY2wxV1999WjdoYceOlVb22233eZ2B1imWms5n+WMiAAoJYgAKCWIACgliAAoJYgAKCWIACjlpqeM2meffQbLd91119F1xi4HWLdu3aL0Cdj6GBEBUEoQAVBKEAFQShABUEoQAVDKrDlGHXvssYPlBx544Og6GzZsGCx/97vfvSh9iohYvXr1YPkdd9wxuk7m8L0Xx36WG264YfqOsdWb9ibRa9euHa078sgjN7M3Ww8jIgBKCSIASgkiAEoJIgBKCSIASvmqcEbdeOONg+V777336Do333zzYPn++++/KH2KiHjrW986WH722WdP3daHP/zhwfK777576rbGnHHGGYvWFrUW8/1ybNbcXDPtVhpfFQ7AiiCIACgliAAoJYgAKCWIACgliAAoZfr2CvXII49s8W2M3Sh0Ic4///zB8pNOOml0nbe85S2D5WeeeeZg+U477TR9x5bAdtttV90FFsmaNWsGy8f2ybmcddZZU21jJTJ9G4AVQRABUEoQAVBKEAFQShABUMpXha9QL3vZywbLb7vttsHyl7zkJaNtHXTQQYPlr3rVqwbLd9hhh030bmML+ertc845Z+p1YEs6/PDDq7uwVTIiAqCUIAKglCACoJQgAqCUIAKglFlzK9Tll18+1fLr1q2behv33XffYPkpp5wyus611147WP7BD35w6u3DcnPEEUdUd2GrZEQEQClBBEApQQRAKUEEQClBBEApQQRAKdO3GTV209O5vkL8W9/61mD5/fffvyh9WmwPP/zwYPm99967xD1hazT2deARW9dXgm8uIyIASgkiAEoJIgBKCSIASgkiAEqZNcfUWmujdddff/1g+R577DFYvn79+sXoUkREbLfddovWFkxjbHacmXHzY0QEQClBBEApQQRAKUEEQClBBEAps+a2ETvuuONo3cknnzxYvssuuwyWb9iwYbStK664YrB81arhzzxz9QuWG7PjtgwjIgBKCSIASgkiAEoJIgBKCSIASgkiAErlXDewXPSNZS7dxniMQw89dLTuK1/5ylRtXXzxxaN1Y18vvueeew6W33rrrVNtey5uegrLS2st57OcEREApQQRAKUEEQClBBEApQQRAKXc9JSpXXbZZVOv8+pXv3oL9ATYGhgRAVBKEAFQShABUEoQAVBKEAFQShABUMr07W3ENddcM1q3atXw55Gxm4juvvvuo22N3dx09erVc/QO2JYZEQFQShABUEoQAVBKEAFQShABUMqsOeL0008fLN9jjz0Gy0877bQt2R1gG2NEBEApQQRAKUEEQClBBEApQQRAqWytLd3GMpduY8zbgw8+OFg+dg+65Wrs3nhAjdZazme5lfVOA8BWRxABUEoQAVBKEAFQShABUEoQAVDKTU9ZcdO0ga2LdyAASgkiAEoJIgBKCSIASgkiAEqZNYebhQKljIgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAoJYgAKCWIACgliAAola216j4AsA0zIgKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoJQgAqCUIAKglCACoNT/B6yYFreomSOTAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dataset_path = \"../datasets/mnist_cluttered_60x60_6distortions.npz\"\n",
    "batch_size = 256\n",
    "num_epochs = 30\n",
    "\n",
    "data_manager = ClutteredMNIST(dataset_path)\n",
    "train_data, val_data, test_data = data_manager.load()\n",
    "x_train, y_train = train_data\n",
    "plot_mnist_sample(x_train[7])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            (None, 60, 60, 1)    0                                            \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2D)  (None, 30, 30, 1)    0           input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_1 (Conv2D)               (None, 26, 26, 20)   520         max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2D)  (None, 13, 13, 20)   0           conv2d_1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_2 (Conv2D)               (None, 9, 9, 20)     10020       max_pooling2d_2[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 1620)         0           conv2d_2[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 50)           81050       flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_1 (Activation)       (None, 50)           0           dense_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 6)            306         activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "bilinear_interpolation_1 (Bilin (None, 30, 30, 1)    0           input_1[0][0]                    \n",
      "                                                                 dense_2[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 30, 30, 32)   320         bilinear_interpolation_1[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "activation_2 (Activation)       (None, 30, 30, 32)   0           conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_3 (MaxPooling2D)  (None, 15, 15, 32)   0           activation_2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 13, 13, 32)   9248        max_pooling2d_3[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "activation_3 (Activation)       (None, 13, 13, 32)   0           conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_4 (MaxPooling2D)  (None, 6, 6, 32)     0           activation_3[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "flatten_2 (Flatten)             (None, 1152)         0           max_pooling2d_4[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "dense_3 (Dense)                 (None, 256)          295168      flatten_2[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_4 (Activation)       (None, 256)          0           dense_3[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dense_4 (Dense)                 (None, 10)           2570        activation_4[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "activation_5 (Activation)       (None, 10)           0           dense_4[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 399,202\n",
      "Trainable params: 399,202\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = STN()\n",
    "model.compile(loss='categorical_crossentropy', optimizer='adam')\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 49us/step\n",
      "10000/10000 [==============================] - 0s 49us/step\n",
      "Epoch: 0 | Val: 0.17136050443053247 | Test: 0.17655548879206182\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----------------------------------------\n",
      "10000/10000 [==============================] - 1s 55us/step\n",
      "10000/10000 [==============================] - 1s 54us/step\n",
      "Epoch: 10 | Val: 0.17013455713624134 | Test: 0.17813963381517678\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----------------------------------------\n",
      "10000/10000 [==============================] - 0s 49us/step\n",
      "10000/10000 [==============================] - 1s 55us/step\n",
      "Epoch: 20 | Val: 0.19145010298341514 | Test: 0.1978291994124651\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVEAAAD8CAYAAADOg5fGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAGwlJREFUeJzt3Xm81FUZx/HPlR0EBEQWQ5MdFC3ZVBAjA9RehjeSeFkGKIuFYSgmGF5TNECNWEx84QIlCQiE5IIkCBkYsUOyr4IkKMq+w6U/7Jkzw70X7twz85vt+/7HubPcOfK7c+Y55zznOVlnzpxBRESK5oJEN0BEJJWpExUR8aBOVETEgzpREREP6kRFRDyoExUR8aBOVETEgzpREREP6kRFRDwUD/LNsrKyot4elZ2dDcDEiRMB+OyzzwCYP38+AMuWLQMgfOfViBEj/BoaJ2fOnMlKdBvioSjX1Vx55ZUAXH311QB88MEHAOzevTsGLQuGrmt6Kux1VSQqIuIhK8i980X5ZqtTpw4Ao0ePBuCb3/wmAI0aNQJcBBr+/1GsWDGvdsaLIpa8/v73vwNw3XXXAXDvvfcCMGXKlBi0LBi6rulJkaiISAACnRMtis2bNwPQsWNHAHJzcwEoWbIkAB06dABgwIABCWid+Jo6dSoAbdq0AaBLly4AvPfeewAcPHgwMQ0TKSRFoiIiHpJ+TjSdaO4sr3LlygHwt7/9DXAR6eLFiwG47bbbQs/dt29fkdsYT7qu6UlzoiIiAVAnKiLiQcP5AGnYVzBLXXv66acBuOuuuwB48MEHQ8/5wx/+4Ps2caHrmp40nBcRCUDSpzhJZjh8+DAAtWvXBmDt2rUATJo0KWFtksRo164dABUqVABg586dAKxevRqAKlWqhJ7btm1bAMaNGxdkEyMoEhUR8ZA2kWj4Vs/rr78ecInaK1euBFw6zfvvvw/AJZdcAsC3v/3t0GuV3J0Y7du3B1whEkttsoIzkjmsKM0Pf/hDAGrWrAlAqVKlAPc5BpgzZw6gSFREJGWlfCR64YUXAvDEE0+E7rv//vsB2LVrFwDf//73gbyru2dHrLF2wQVff0fZVlXJy6KMp556CoAJEyYA8K9//SthbZLEKF26NABLliwBoHr16gDcfvvtAIwfPx6AYcOGhV5z8uTJAFuYP0WiIiIeUjZPtFKlSoArYHHTTTeFHps+fToAjz/+OADTpk0DoEaNGoAru7Zu3TrvdrRq1SriPQCqVasGwPr16wFo2LAhoHzCcFZAZuTIkQD06NEDcCUON23aFKvmxZ2ua/TsswguN9jmQuvWrQtAmTJlANi4cSMAR48eBVyhdojvnLnyREVEApByc6KtW7cG3NzZpZdeCsBLL70Uek6/fv0A941lkWHPnj2B2ESg5qOPPgKgZcuWofusjFuDBg1i9j7p5tprrwWgW7dugDvSJZUiUIleVtbXwd3AgQND9/3sZz8DXGH1F154AXCfI/uM7d+/P7B2RkORqIiIh5SJRGvVqgXA5MmTATen1rdvXwDGjh0beq7lf9pci+14mDdvXtTvayuDX331FQALFiyIeNy+PT/55JPQfZ06dQKgc+fOUb9fprCMiePHjwMu6jiXyy+/HIDvfe97AFSuXBlwhxh++umnMW+nxJZ9XsKzaWwe3NYqLI+7RYsWAMycOTPIJkZNkaiIiIekj0Qt1/Lll18GXF6oHQuycOHCPK+xKMfmS23e7Ysvvoj6/f/0pz8Bbj61MNasWQPAmDFjon6/dGfRo2VTWKHlFStWRDzPrl3//v1D93Xv3h1we6qN5QO/9tprcWixxMOhQ4fy3D516hQA5cuXB/KO+kqUKAFErj/Y6GP79u1AYnKyFYmKiHhQJyoi4iHph/PFi3/dRAvTbXhvCz72ePj5O0OGDAHcgtKMGTOifl8rEmy/45///GfUv2Pv3r1RvybdHTlyBICKFSsCbshm/1a2KDdq1CgAypYtG3rtf//7X8BtCbV0N1tIlNRh03LgFpB27NgBuIXC+vXrA+7z3LRpU8Bdd3ALzG+99RYAv/zlL4FgFxkViYqIeEj6SPTEiROAWxyyRPo+ffoA7rz5Y8eOhV5j0Ysl1duZ9e+++y5w7qRdSwa29CgrTmIRVFHaLo5dJyvCbAtNN954I+A2UUyZMgVwkQW4a2Cl0OxEUItQJXU0a9YsdNs2w9j1fe655wD4yU9+ArhCJPZ4+CKkbRG95ZZbALeJQ5GoiEiKSLkCJBYp1qtXD4Cf/vSnADz22GOh51hRAjtOwKKfXr16RTyeH0ujaNKkCeCKH8SiXJ4KVTi27S8nJwdwkemBAwcAuPXWWwE3TwbuWlva06xZswB46KGHgMRF/rqu0bPEenDz4tYX2bqHfdZPnz4NuL8JS8YHNzJ95plnAHj00UcBePbZZ73bqAIkIiIBSPo50bPZt9WGDRsA2Lx5MxC5Et6mTRugaMUsrMjrsmXLvNop5/bqq68Cbg7LVuUt0XrRokWAK4cGMHfuXMAVrMhvo4WkhvDP65dffgm4+fGlS5cCLgvD5sVtZBnOigxZ1Hr2RowgKBIVEfGQcpGosaMErJiv5ZYBbNmyJSFtksLbvXs3AA8++CAA3/jGNwA3J21FRsLnom1uTFLf1q1bQ7d//OMfAy4itS2cNtdtxZgtV9xGLQDNmzcH4B//+AfgVvaDpEhURMRDykai9m1k5dGsOAXoYLhkZHl8Z5e8s9V3OzRQMkN4JoXNdZ/NdiNaxoaVlrTRC7g1jAceeABITOFmRaIiIh4SGonaLqTBgweH7hs3bhzg8gcLYnMhVv4sXsdK2OqwzctI0VjebWGKL0tmszKItWvXBqBq1aoADB8+HIjcjWQj0o8//jjIJkZQJCoi4kGdqIiIh4Rs+7Qyc5bm8Prrr4ee07VrV8BVuS5I27ZtAfj3v/8NFK1ASGHYiZ12hryPTN4eaMUkbIvftm3b4tqmWLEkbnCpOPY3atsQM/m6xoOdo2ZDdVsotqkgKzoE7hSJeNC2TxGRACRkYcm+yS0KtnOM4PwRqCkoLaIwbMLatg/aeT/gisXaRHXNmjUBd6aTFI0tFlxzzTVA8keiVn7NFjPApdjYWV1Wwk1iywoFvfnmmwCsXLkSiG/U6UORqIiIh4TMib744ouAS13o0qVL6DmWPBtPdsyARaLhxUaWL18OwKpVq2L+vpo7S36W0mZz7ZbwDa58nx0Zs2fPHgC2bt2q65qGNCcqIhKAhESitjXLVt9mz54dWBsSSZFo8mvcuDHgtiUWZhOHrmt6UiQqIhKAhESivXv3Blx+aCyO3kgFiljSk65relIkKiISgJQ7qC6VKWJJT7qu6UmRqIhIANSJioh4UCcqIuJBnaiIiAd1oiIiHtSJioh4SNnTPiV5VahQAXCFmAHGjBmTqOaIxJUiURERD4pEJeas6PVVV10Vuq9EiRJAMKUORYKkSFRExIMiUYm5Nm3aAJEFjRWBSrpSJCoi4iHQAiQiIulGkaiIiAd1oiIiHtSJioh4UCcqIuJBnaiIiAd1oiIiHtSJioh4UCcqIuJBnaiIiAd1oiIiHtSJioh4UCcqIuIh0FJ4WVlZGVXtpEyZMgC89957ALRp0yYrke2Jl0y7rmc7c+aMrmsaKux1VSQqIuJBRZnj6MSJEwBs3749wS0RkXhRJCoi4kGRaBzdfPPNAFx99dUJbomIFGTIkCEAfPe73wWgZcuWUb1ekaiIiIdAjwfJlNW+mjVrArBw4UIAKlSoAEDFihW1ipuGtDqf2jZu3AhA3bp1AcjK+vpyanVeRCQA6kRFRDxoOB8H5cqVA6B9+/YALFiwAIDdu3en5bCvePHiZwBOnz4NRAyHEteoAGk4X3gNGjQA4Omnnw7dd+rUKQBmzpwJwBtvvAHA0aNHY/32+bJNMSVKlADg4MGDAOTm5mo4LyISb4pEA5SuEUt2dvYZgFq1agEwadIkAL744ovENSpA6XpdY/l5tUWbOXPmAO5v5f/vA7gIcNiwYQD87ne/AxI3otHCkohIABSJerJ5FJvXARg5ciTgUpt+8YtfAHD48GFFLFGqVq1a6PbWrVsBaNOmDQBLliyJ19tGRZHo+T333HMA/OpXvwLgggtc/LZnzx4AVq5cCUDz5s0B+M53vgPAihUrYtWMqCgSFREJQMps+yxdujQAFStWBGD37t0JaYet5A0cOBCAW265BYCJEyeGnrNlyxYA+vbtC0BOTk6QTUwrubm5odu7du0CoHjx/P9sbZtto0aNAPjjH/8YeixTMgWSlV2zYsWK5Xns5ZdfBmDMmDEAzJ8/H4DZs2cD8PDDDwMwbty4uLezKBSJioh4SIpI1FbhAH77299GPHbPPfcAMGrUKAAeeeQRAF555RUADhw4EEALHYsuBw0aBLgtY+Hfkvv37wegdu3agJvDk+iF5wratb7yyisBt622Tp06ALz22msATJs2DYicd7McVkmM48ePA25EsHfv3tBjw4cPB9zc6JNPPgnA888/D8CNN94IwPjx4yN+R7JQJCoi4iEpIlGb8wA352mr3ffffz/g5saaNWsGwJ133glAz549AVizZk3od8Tjm8pW4StVqhRxv+2u2LdvX57XTJgwAXCrjBK98NX5evXqAfCf//wn4jnVq1cHoHLlygA888wzgKLPZGC79nr06BFx/+effx66bRGosRFFr169AOjWrRsAv//97wFYvXp1XNpaVIpERUQ8JEUkGn58xn333Qe4XQzHjh0DoE+fPoCbe7SI9KmnngLcajnAunXrYta2smXLAm6vr82J2hyP5baFu/TSSwG3WnzFFVfErD2ZJnw+efPmzUDevEGbIy1VqhQAJUuWzPN77O/J9m63bt0agFdffRWIzAKQ2LH5ahsl2AjT1jTyY8fq2BxoixYtALdeYqPQZKFIVETEQ6CR6Le+9S0ARowYAbiIwqJNiFxRBTevdXZFF9ut8uc//xlwESy4XRE+ypcvD8CMGTMAqFGjBuCi5osvvhiAW2+9FXDzNeGPWUQ0d+5cANq1a+fdrkxh+bg2HwZw+PBhIO/fSJMmTSJ+btiwIeCuA8ATTzwBuDl3i2qSbaU33dxwww0RP1ueaEG5vuFuuukmwF0jGxUmG0WiIiIe1ImKiHgIdDhvaUi2VdKG8S+99FLoOY0bN454jYXwXbp0AVyZNTN9+nQA2rZtG7rv7rvvBlyqRDSys7MBl+hrw3ibVrBhiBXDsJMC77333vP+bg0dCy+8oIuxBbqmTZsC7lpcd911Ec97++23gciE7r/+9a+Am/bZtm1bbBss+bJrdPbf/ocffljga+wzaMN5M2/evNg2LkYUiYqIeAg0ErXUhbPZ6ZjgUk1mzZoFwB133HHO15oBAwaEbh85ciSqdoVHkVYEwYpdWFm75cuXAy7twhK6N23aFNV7SeGcPHkSgIceeih03+LFiwEXkVjR57M3Otg2QrtGkLiCNZlux44dET9bqln4SMO2R9siom2+sZQ1K+jzzjvvxLWtRaVIVETEQ0KS7S1FZfDgwUD+qT+TJ08Gzh+Bmmijz3DhCfO9e/cG4K233gLclrTHH38ccEUvpk6dWuT3k8JbunRp6Pbll18OuKMldu7cCbi/kbVr1wKuAIyiz8QbOnQoAP3794+4PzyqtHnTiy66CHCjUYtAbeuo/ZxsFImKiHhIyPEglgz9/vvvA5FzopaIHz4XlkhWPMTmaG3l3wqPREPHSMRX586dAXjssccAt4oPhR/RFIWua8Esu8ZGcv369QPyT7a3a2SbcKwAyapVq3ybUSQ6HkREJAA6qK4AVjjhgw8+ANw3Z6tWrYCi5RkqYokv21ZsmRThc+121EQ86LoWnhV+6dSpU+i+DRs2ALBgwQLA5ZPnlyscJEWiIiIBUCRaADsYb9myZYArMHKuEl7no4glvqxojBWnCS/Ubbtg4kHXNT0pEhURCYAi0fO48MILAVeGzeffSxFLMC677LKI/4I7hjceMvm6VqlSBXDlCG2F3UZw4WUuU40iURGRAKgTFRHxoOF8gDJ52JcINhUDcOjQobi9T6Zc165duwLuXCpw01tTpkwB3KmeNv2VyjScFxEJQFKc9inpz7ZgWmL1wYMH4/6e6RANJRMr8BJ+xtWiRYsAt0UzE//NFYmKiHhQJCqBsAT4Ro0aAbBu3bq4v6eOY4mt1atXA65UHbiiy0GMLJKVIlEREQ+KRCUQVvj6008/TXBLpKhsvjO8ALoVUs5kikRFRDwoEpVADBo0CIhvvqYEI/xgwLp16wLuyJazD6bLBIpERUQ8aMdSgDJlZ0um0XVNT9qxJCISAM2JikhSycnJAeDOO+8EoHnz5kDyltVTJCoi4kFzogHS3Fl60nWNLVvhP336NADXXnstAF999VWg7dCcqIhIANSJioh40MKSiCSVzZs3A66ATKLPnz8fRaIiIh4UiYpIUmjYsCEAderUAWDNmjVA8hd6ViQqIuJBkaiIJIUaNWoArmD3b37zG8ClOiUrRaIiIh4CTbYXEUk3ikRFRDyoExUR8aBOVETEgzpREREP6kRFRDyoExUR8aBOVETEgzpREREP6kRFRDyoExUR8aBOVETEgzpREREPgZbC06mQOhUyHem6pied9ikiEgB1oiIiHtSJioh40PEgIpKUypQpA0CvXr0AGDlyZCKbUyBFoiIiHhSJikhgWrZsCUD9+vVD9/3lL38BIDc3N+K5JUqUAOCGG24AFImKiKQldaIiIh4CPe0zlZJ3y5cvD0C1atUAqF27NgA///nPAcjOzo76dyopO/WULl06dPvYsWP5PkfXtfA2bNgAQL169UL3de/eHYDx48dHPNeG81lZX//znjhxItbNOScl24uIBCBtFpY6duwYuv36668D0LRpUwDWrVuX72suueQSADp06BC6r0WLFgC0b98ecBPgy5cvB+CVV16JZbMlybzwwgsA9OzZE4Bx48aFHrNUGym8smXLAjB9+nTARaCrVq0KPefsCNScPHky4mdbYBo4cGDovttvvz1mbS0qRaIiIh5Sdk7U5kv69u0LwNChQ0OPPf/88wAMGDAAgOPHjwPum8y+HZ999lkAatSoEXrtjBkzAPfNad+GH330EQBHjx4tcps1d5a87r77bgDGjh0LuLnQPXv2hJ5TtWrVfF+r61qwwYMHAzBo0CAArL+5+eabQ8+ZO3fu+doBuM988eJuAH3kyBHfJhZIc6IiIgFIuUjUokibm6xbty4AEyZMCD1n9OjRQN7k3cmTJwOwb98+AIYPHw7AZ599FnrOwYMHAfeNGUuKWJJPuXLlAHjzzTcBN09uUU+xYsVCz23QoEG+v0PXNa9SpUoBsH///oifR4wYAUC/fv18mxd3ikRFRAKQcpGoj507dwKQk5MDBL/Srogl+VgGx8UXXwy4uW8bkRSGrmteP/jBDwC3xrB+/XoAmjVrBsChQ4dCz7XRgGXEVKlSBYBp06YBsHfv3qI2w4siURGRAKRNnmhh2Aqh5fvZHGn4t6JklqVLlya6CWnF5pL79+8fcf8999wD5P9ZW7RoEQCNGzcGXEaMPXfSpEnxaWyMKBIVEfGQUZGo7T6x+a4FCxYAkfvgt2zZEnzDRNLE9ddfD0Dr1q0BWLx4MeB2Ddp8p+0qBBeBGotm+/TpA8Dbb78NJO+IUZGoiIiHtIxEbUfDqVOn8n1869atAFx00UWAW6EFRaKJYrtSgswWkdiz3Gzb6VW5cmXA5YnecccdgFuJPxeLPM/eQ59sFImKiHhQJyoi4iFthvNDhgwJ3Z46dSoAK1asAFyCb7t27QC35Wzbtm0ATJkyJahmyv898MADgCtrNnPmTABq1aoFwIEDBwBXghDgk08+AeCNN94ACi6SLImzceNGADZt2gTAl19+Cbit1RUqVDjv71iyZAkAP/rRjwBXQChZKRIVEfGQNpGonVENLiXCIk2LRBcuXAhA165dAZg/f36ALZRwhw8fBlw6S5MmTQBXrNcKV1xxxRWh1zz66KOAG2GEF/aV5LB7927Aje6syM8jjzwCuBSo/NjxHz169ADc30iyUyQqIuIhbQqQVK9ePXTbSt1ZmTxLdbL5mtOnT8erGeekQhXRs8IgAHPmzAGgd+/egBtZJJqua16XXXYZ4M6Ut+T7/NgmGEuu9yl8HksqQCIiEoC0mRPdtWtXnvs+/vjjBLREYsk2RIA7tlqS3/bt2wGXCfPkk08CLoE+vAzlrFmzAm5dbCkSFRHxkDaRqKSXmjVrAvDOO++E7rO5bFvFleRnOZ+33XZbglsSP4pERUQ8KBKNIyu+cM011yS4JamnY8eOANSvXz/PY4nKrpDo2cF/9t90XKdQJCoi4iFt8kSTie0PrlixIgA7duwAlE9YGJZP+O677wJunzy48mmff/454HaiRcPmWm2HVCxWhjP5ulaqVAmAbt26AXDfffcBbrfgypUrAXjxxReB1Co1qTxREZEAqBMVEfGg4XyAMnnYV1gjRowA3IJSeGpM586dAXj44YcBaN68eaze1ksmX1c7Mbd06dKAKzRiZyqlMg3nRUQCoBSnKNmZ9WPHji30a+zMJymYpTTZ+eRWtDmcFWW2ws2SeFbK0Iqip0MEGi1FoiIiHjQnGiUrp1evXr3zPtdOsPz1r38NwNChQzN27qwgVkz7ww8/tN8FQKtWrYDIoyFatGgBwLx58wCoWrUqkPjivZk8J9qpUycAOnToALiNJevXrwdg7dq1AIwePRpI3rPj86M5URGRAGiyLkq2ba1kyZLAuYthWFR1wQX6ripIly5dALcaf9dddwH5H062aNEiAMqWLRtQ6+R87PNgyfV2MJ39nAn06RYR8aA50SgNHjwYgKuuugqA7OzsQr82k+fOzla+fHkApk2bBkCVKlUAl/uZm5sbq+bFna5rarO59rZt2wIwbNgwQHOiIiKB0JxolHJycgAIMoJPRwcPHgRg4sSJACxduhRIrQhU0oMdctm4cWPAFVUpLEWiIiIeNCcaIM2dpSdd1/Qwe/ZswM2Rli9fXnOiIiLxpkg0QIpY0pOua3qwjBtbpR81apQiURGReFMnKiLiQcP5AGnYVzArRFKuXDkA9uzZ4/srA6Prmp6UbC8iEoCMSra3whVHjhxJcEvE2HEgdkKqFbvev38/ACdPnkxMw0QKSZGoiIiHjJoT7d69OwDjxo1LyPtr7iwvOzrl1KlTMWtP0HRd05PmREVEAhBoJCoikm4UiYqIeFAnKiLiQZ2oiIgHdaIiIh7UiYqIeFAnKiLiQZ2oiIgHdaIiIh7UiYqIeFAnKiLiQZ2oiIgHdaIiIh7UiYqIeFAnKiLiQZ2oiIgHdaIiIh7UiYqIeFAnKiLiQZ2oiIgHdaIiIh7UiYqIeFAnKiLiQZ2oiIiH/wG5fwG+1sXxbQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "----------------------------------------\n"
     ]
    }
   ],
   "source": [
    "input_image = model.input\n",
    "output_STN = model.get_layer('bilinear_interpolation_1').output\n",
    "STN_function = K.function([input_image], [output_STN])\n",
    "\n",
    "for epoch_arg in range(num_epochs):\n",
    "    for batch_arg in range(150):\n",
    "        arg_0 = batch_arg * batch_size\n",
    "        arg_1 = (batch_arg + 1) * batch_size\n",
    "        x_batch, y_batch = x_train[arg_0:arg_1], y_train[arg_0:arg_1]\n",
    "        loss = model.train_on_batch(x_batch, y_batch)\n",
    "    if epoch_arg % 10 == 0:\n",
    "        val_score = model.evaluate(*val_data, verbose=1)\n",
    "        test_score = model.evaluate(*test_data, verbose=1)\n",
    "        print_evaluation(epoch_arg, val_score, test_score)\n",
    "        plot_mnist_grid(x_batch, STN_function)\n",
    "        print('-' * 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_mnist_grid(x_train)\n",
    "plot_mnist_grid(x_train, STN_function)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
